<script setup>
import Footer from "@/components/footer.vue";
import { ref, onMounted } from 'vue';
import axios from 'axios';
import qs from 'qs';
import { useRouter, useRoute} from 'vue-router';

const router = useRouter();
const route = useRoute();

// 使用ref创建响应式数据
const businessId = ref(route.query.businessId);
const user = ref({});
const deliveryAddressArr = ref([]);

// 在组件挂载时执行
onMounted(() => {
  // 从sessionStorage中获取用户信息
  user.value = JSON.parse(sessionStorage.getItem('user'));
  // 列出用户的送货地址
  listDeliveryAddressByUserId();
});

// 查询送货地址
const listDeliveryAddressByUserId = () => {
  axios.post('http://localhost/address/DeliveryAddressController/listDeliveryAddressByUserId', qs.stringify({
    userId: user.value.userId
  })).then(response => {
    deliveryAddressArr.value = response.data;
  }).catch(error => {
    console.error(error);
  });
};

// 设置用户选择的默认送货地址并存储到localStorage中
const setDeliveryAddress = (deliveryAddress) => {
  localStorage.setItem(user.value.userId, JSON.stringify(deliveryAddress));
  router.push({ path: '/order', query: { businessId: businessId.value } });
};

// 跳转到添加用户地址页面
const toAddUserAddress = () => {
  router.push({ path: '/addUserAddress', query: { businessId: businessId.value } });
};

// 编辑用户地址
const editUserAddress = (daId) => {
  router.push({ path: '/editUserAddress', query: { businessId: businessId.value, daId: daId } });
};

// 删除用户地址
const removeUserAddress = (daId) => {
  if (!confirm('确认要删除此送货地址吗？')) {
    return;
  }
  axios.post('http://localhost/address/DeliveryAddressController/removeDeliveryAddress', qs.stringify({
    daId: daId
  })).then(response => {
    if (response.data > 0) {
      let deliveryAddress = JSON.parse(localStorage.getItem(user.value.userId));
      if (deliveryAddress && deliveryAddress.daId === daId) {
        localStorage.removeItem(user.value.userId);
      }
      listDeliveryAddressByUserId();
    } else {
      alert('删除地址失败！');
    }
  }).catch(error => {
    console.error(error);
  });
};
</script>

<template>
  <div class="wrapper">
    <!-- header部分 -->
    <header>
      <p>地址管理</p>
    </header>
    <!-- 地址列表部分 -->
    <ul class="addresslist">
      <li v-for="item in deliveryAddressArr">
        <div class="addresslist-left" @click="setDeliveryAddress(item)">
          <h3>{{item.contactName}} {{item.contactTel}}
          </h3>
          <p>{{item.address}}</p>
        </div>
        <div class="addresslist-right">
          <i class="iconfont icon-edit" @click="editUserAddress(item.daId)"></i>
          <i class="iconfont icon-shanchu" @click="removeUserAddress(item.daId)"></i>
        </div>
      </li>
    </ul>
    <!-- 新增地址部分 -->
    <div class="addbtn" @click="toAddUserAddress">
      <i class="iconfont icon-jiahao-" style="margin-right: 5px; margin-top: 2px"></i>
      <p>新增收货地址</p>
    </div>
    <!-- 底部菜单部分 -->
    <Footer></Footer>
  </div>

</template>


<style scoped lang="less">
@import url('../assets/font/font_bianji/iconfont.css');
@import url('../assets/font/font_shanchu/iconfont.css');
@import url('../assets/font/font_jiajian/iconfont.css');

/*************** 总容器 ***************/
.wrapper {
  width: 100%;
  height: 100%;
  background-color: #F5F5F5;
}
/*************** header ***************/
.wrapper header {
  width: 100%;
  height: 12vw;
  background-color: #0097FF;
  display: flex;
  justify-content: space-around;
  align-items: center;
  color: #fff;
  font-size: 4.8vw;
  position: fixed;
  left: 0;
  top: 0;
  /*保证在最上层*/
  z-index: 1000;
}
/*************** addresslist ***************/
.wrapper .addresslist {
  width: 100%;
  margin-top: 12vw;
  background-color: #fff;
}
.wrapper .addresslist li {
  width: 100%;
  box-sizing: border-box;
  border-bottom: solid 1px #DDD;
  padding: 3vw;
  display: flex;
}
.wrapper .addresslist li .addresslist-left {
  flex: 5;
  /*左边这块区域是可以点击的*/
  user-select: none;
  cursor: pointer;
}
.wrapper .addresslist li .addresslist-left h3 {
  font-size: 4.6vw;
  font-weight: 300;
  color: #666;
}
.wrapper .addresslist li .addresslist-left p {
  font-size: 4vw;
  color: #666;
}
.wrapper .addresslist li .addresslist-right {
  flex: 1;
  font-size: 5.6vw;
  color: #999;
  cursor: pointer;
  display: flex;
  justify-content: space-around;
  align-items: center;
}
/*************** 新增地址部分 ***************/
.wrapper .addbtn {
  width: 100%;
  height: 14vw;
  border-top: solid 1px #DDD;
  border-bottom: solid 1px #DDD;
  background-color: #fff;
  margin-top: 4vw;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 4.5vw;
  color: #0097FF;
  user-select: none;
  cursor: pointer;
}
4.3.7.AddUserAddress组件
     .wrapper .addbtn p {
       margin-left: 2vw;
     }
</style>